1 package com.imcode.db.benchmark; 2 3 import com.imcode.db.jdbc.PreparedStatementWrapper; 4 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.SQLException; 8 9 import org.apache.commons.lang.time.StopWatch; 10 11 class BenchmarkPreparedStatement extends PreparedStatementWrapper { 12 13 private final String sql; 14 private BenchmarkDatabase benchmarkDatabase; 15 16 BenchmarkPreparedStatement(BenchmarkDatabase benchmarkDatabase, PreparedStatement preparedStatement, String sql) { 17 super(preparedStatement); 18 this.benchmarkDatabase = benchmarkDatabase; 19 this.sql = sql; 20 } 21 22 public ResultSet executeQuery() throws SQLException { 23 StopWatch stopWatch = new StopWatch(); 24 stopWatch.start(); 25 ResultSet resultSet = super.executeQuery(); 26 stopWatch.stop(); 27 long time = stopWatch.getTime(); 28 benchmarkDatabase.getAverages(sql).getQueryAverage().add(time, 1); 29 return new BenchmarkResultSet(benchmarkDatabase, sql, resultSet); 30 } 31 32 }